package com.xinyou.u8c.utils;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.Collections;

/**
 * @Author: pxm
 * @Description: MybatisPlusGenerator
 * @CreateTime: 2022-06-17  10:52
 * @Version: 1.0
 */

public class MybatisPlusGenerator {
    public static void main(String[] args) {
        String tableStr = "fitemssZF,fitemss03,inventory,bank";

//        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true",
//                "root",
//                "123456")
//        FastAutoGenerator.create("jdbc:oracle:thin:@127.0.0.1:1521:orcl",
//                "midhis",
//                "midhis")
        FastAutoGenerator.create("jdbc:sqlserver://81.69.3.145:1433; databaseName=UFDATA_994_2023",
                "sa",
                "!@#123qweasd")
                .globalConfig(builder -> {
                    builder.author("chq") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(System.getProperty("user.dir")+"/src/main/java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.xinyou") // 设置父包名
                            .moduleName("u8c") // 设置父包模块名
                            // .service()  // 设置自定义service路径,不设置就是默认路径
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") +"/src/main/java/com/xinyou/u8c/mapper/")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(tableStr.split(",")) // 设置需要生成的表名
//                            .addTablePrefix("t_", "c_")
                            // 设置自动填充的时间字段
                            .controllerBuilder()
                            .enableRestStyle()
                            .enableHyphenStyle()
                            .mapperBuilder()
                            .enableBaseResultMap()//启用 BaseResultMap 生成，默认值:false
                            .superClass(BaseMapper.class)//设置父类，BaseMapper是com.baomidou.mybatisplus.core.mapper中的
                            .enableMapperAnnotation()//开启 @Mapper 注解，默认值:false
                            .enableBaseColumnList()//启用 BaseColumnList，默认值:false
                            .entityBuilder()
                            .enableTableFieldAnnotation()
                            .enableLombok()
                            .addTableFills(new Column("create_time", FieldFill.INSERT),new Column("update_time", FieldFill.INSERT_UPDATE))
                    ; // 设置过滤表前缀

                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }
}
